import request from '@/utils/request'

/**
 * 字典数据管理API接口
 */

// 分页查询字典数据列表
export function getDictDataPage(currentPage, pageSize, queryData) {
  return request({
    url: `/api/dict-data/page/${currentPage}/${pageSize}`,
    method: 'get',
    params: queryData
  })
}

// 根据ID查询字典数据详情
export function getDictDataById(dictDataId) {
  return request({
    url: `/api/dict-data/${dictDataId}`,
    method: 'get'
  })
}

// 根据字典类型ID查询字典数据列表
export function getDictDataByTypeId(dictTypeId) {
  return request({
    url: `/api/dict-data/type-id/${dictTypeId}`,
    method: 'get'
  })
}

// 根据字典类型编码查询字典数据列表
export function getDictDataByTypeCode(dictTypeCode) {
  return request({
    url: `/api/dict-data/type-code/${dictTypeCode}`,
    method: 'get'
  })
}

// 根据字典类型编码和字典值查询字典数据
export function getDictDataByTypeCodeAndValue(dictTypeCode, dictValue) {
  return request({
    url: '/api/dict-data/by-value',
    method: 'get',
    params: { dictTypeCode, dictValue }
  })
}

// 根据字典类型编码和字典标签查询字典数据
export function getDictDataByTypeCodeAndLabel(dictTypeCode, dictLabel) {
  return request({
    url: '/api/dict-data/by-label',
    method: 'get',
    params: { dictTypeCode, dictLabel }
  })
}

// 获取所有启用的字典数据（用于缓存）
export function getAllEnabledDictData() {
  return request({
    url: '/api/dict-data/all-enabled',
    method: 'get'
  })
}

// 根据标签模糊查询字典数据
export function getDictDataByLabel(dictLabel) {
  return request({
    url: '/api/dict-data/search',
    method: 'get',
    params: { dictLabel }
  })
}

// 新增字典数据
export function addDictData(dictData) {
  return request({
    url: '/api/dict-data',
    method: 'post',
    data: dictData
  })
}

// 更新字典数据
export function updateDictData(dictData) {
  return request({
    url: '/api/dict-data',
    method: 'put',
    data: dictData
  })
}

// 删除字典数据
export function deleteDictData(dictDataId) {
  return request({
    url: `/api/dict-data/${dictDataId}`,
    method: 'delete'
  })
}

// 批量删除字典数据
export function batchDeleteDictData(dictDataIds) {
  return request({
    url: '/api/dict-data/batch',
    method: 'delete',
    data: dictDataIds
  })
}

// 修改字典数据状态
export function updateDictDataStatus(dictDataId, status) {
  return request({
    url: `/api/dict-data/${dictDataId}/status`,
    method: 'put',
    params: { status }
  })
}

// 批量更新字典数据排序
export function batchUpdateDictSort(dictDataMap) {
  return request({
    url: '/api/dict-data/sort',
    method: 'put',
    data: dictDataMap
  })
}

// 刷新字典数据缓存
export function refreshDictDataCache() {
  return request({
    url: '/api/dict-data/refresh-cache',
    method: 'post'
  })
}

// 检查字典值是否在指定字典类型中存在
export function checkDictValueExists(dictTypeId, dictValue, excludeId) {
  return request({
    url: '/api/dict-data/check-value',
    method: 'get',
    params: { dictTypeId, dictValue, excludeId }
  })
}